package com.java.demo.controller;

import com.java.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

@Controller
public class UserController {

    // 1. 属性注入
//    @Autowired // 注入对象（更加简单的从 Spring 容器中读取到对象）
    @Resource // @Resource 不可用在 构造方法注入中
    private UserService userService;

    // 2.Setter 注入
//    private UserService userService;

//    @Autowired // 此时Spring才会给函数传参，然后才会给类属性（userService）赋值，下方才能调用
//    public void setUserService(UserService userService) {
//        this.userService = userService;
//    }

    // 3.构造方法 注入
//    private final UserService userService;
//    // 构造方法注入。如果内部只有一个构造方法的时候，@Autowired 注解 可以不加
////    @Autowired
//    public UserController(UserService userService) {
//        this.userService = userService;
//    }

    public void sayHi() {
        System.out.println("com.java.demo -> do UserController sayHi()");
        userService.sayHi();
    }

}